# Моноблок ICL H510SB-TM

## Объект тестирования

Безымянный моноблок ICL. В нем, судя по всему, использована материнская плата Asrock H510SB-TM.

Запускались операционный системы:

* М ОС (ALT Linux p10)
* ROSA Fresh 12

Пробы оборудования:

* М ОС, ядро 5.10: [https://linux-hardware.org/?probe=8598f1f5ee](https://linux-hardware.org/?probe=8598f1f5ee)
* ROSA, ядро 5.15: [https://linux-hardware.org/?probe=a1f664db17](https://linux-hardware.org/?probe=a1f664db17)

## Обнаруженные проблемы

## Проблема с регулировкой яркости экрана

Шаги для воспроизведения и наблюдаемый результат:

0. Запускаем ОС.
0. Нажимаем кнопку уменьшения или увеличения яркости.
0. Происходит постоянное уменьшение или увеличение яркости, как будто кнопку непрерывно нажимают.
0. На нажатие соседней кнопки (т.е. на нажатия кнопки уменьшения яркости, если первой была нажать кнопка увеличения яркости, и наоборот) перестает реагировать.
0. Ложные нажатия кнопки продолжают происходить до перезагрузки ОС.

![](photos/IMG_20220701_201934.jpg)

На данном моноблоке регулировка яркости происходит программно:

0. Оператор ЭВМ нажимает кнопку увеличения или уменьшения яркости
0. Ядро ОС получает соответствующее событие ACPI
0. Демон ловит событие
0. Демон отправляет драйверу программной регулировки яркости команду изменить яркость

Отследим события. Первый способ:

Запускаем указанную команду и нажимаем кнопку уменьшения или увеличения яркости один раз:

```
$ udevadm monitor
<...>
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[43.369330] change   /devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight (backlight)
UDEV  [43.373103] change   /devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight (backlight)
<...>
```

Другой способ:

0. Ставим пакет acpid:  
на М ОС:  
`# apt-get install acpid`  
на ROSA:  
`# dnf install acpid`

0. Убираем демон из автозагрузки (он там не нужен):  
`systemctl disable acpid`

0. Запускаем демон:  
`systemctl start acpid`

0. Ловим события ACPI, запустив указанную команду и нажав кнопку уменьшения яркости один раз:


```
$ acpi_listen
video/brightnessdown BRTDN 00000087 00000000
video/brightnessdown BRTDN 00000087 00000000
video/brightnessdown BRTDN 00000087 00000000
video/brightnessdown BRTDN 00000087 00000000
<...>
```

Эта строка повторяется бесконечно с частотой около 2-3 раз в секунду.

Попробуем изменить яркость вручную. Узнаем текущее значение яркости:

```
$ cat /sys/class/backlight/intel_backlight/brightness
6000
```

Выставим яркость 50% (экспериментально было установлено, что значение яркости находится в диапазоне от 0 до 120000) и посмотрим новое значение:

```
user@rosa2021 ~ $ echo 60000 | sudo tee /sys/class/backlight/intel_backlight/brightness
60000
user@rosa2021 ~ $ cat /sys/class/backlight/intel_backlight/brightness
60000
```

Глазами видим, что якрость монитора увеличилась. Аналогичным образом ставим обратно значение 6000:

```
user@rosa2021 ~ $ echo 6000 | sudo tee /sys/class/backlight/intel_backlight/brightness
6000
user@rosa2021 ~ $ cat /sys/class/backlight/intel_backlight/brightness
6000
```

Яркость монитора уменьшилась.

Таким образом, можно сделать следующие выводы:

0. Программная регулировка яркости работает правильно
0. Получение событий нажатия аппаратных кнопок регулировки яркости происходит
0. Это событие по какой-то причине приходит в userspace бесконечно много раз. Скорее всего, происходит залипание кнопки, но не вижу оснований полностью исключить отсутстиве размножения событий программным образом.

На ноутбуке ICL проблемы с залипанием нет.
